# coding=utf-8

from pymongo import MongoClient
from bs4 import BeautifulSoup
import requests
import datetime
import pprint
import json
import time
import re

server_client = MongoClient('47.104.130.19', 27017)

server_db = server_client['knx_posts_db']
offical_posts_coll = server_db['offical_posts_coll']

class POST():
    def __init__(self):
        self.company = '广联达科技股份有限公司'
        self.url = "http://www.hotjob.cn/wt/glodon/web/templet1000/index/corpwebPosition1000glodon!getPostListByCondition"
        self.params = {
            'operational':'9a3e730495ee00016addc2ae591d5dbeb8ece497aa5877f7e9871b6fc1ba3da6924812cbfdff5650c214a7b7514960ee0e7d4e1a1ee466e45b3f6ace3615dd9f86b34c0ba62c18a006055e8f6188cdb77d99d67231045687fa17a5aeb8639054f39b24fb349e073870c23bebc58c3ef5'
        }
        self.data = {
            'pc.currentPage':2,
            'pc.rowSize':10,
            'orgId':'',
            'orgParentKey':'',
            'releaseTime':'',
            'keyWord':'',
            'positionType':0,
            'trademark':1,
            'workPlaceCode':'',
            'useForm':0,
            'positionName':'',
            'recruitType':1,
            'specialRecruitId':'',
            'brandCode':1,
            'searchType':1,
            'blockType':1,
            'contentModuleType':'',
            'tagType':'',
            'comType':'',
            'comPart':'',
            'workPlaceNameV':'',
            'positionTypeV':0,
            'showComp':'true',
            'keyWordV':''
        }

        self.scrapy()

    def scrapy(self):
        for i in range(1,5):
            self.data['pc.currentPage'] = i
            r = requests.post(self.url, params = self.params, data = self.data)
            soup = BeautifulSoup(r.text)
            for tr in soup.find_all('table')[1].find('tbody').find_all('tr'):
                url = 'http://www.hotjob.cn' + tr.find('a')['href']
                name = tr.find('th').get_text().strip()
                location = tr.find_all('td')[1].get_text().strip()
                count = ''
                edu = ''
                date = tr.find_all('td')[3].get_text().strip()
                r = requests.get(url)
                soup = BeautifulSoup(r.text)
                description = ''
                for p in soup.find(class_ = 'contxt').find_all('p'):
                    description += p.get_text().strip()

                item = {
                    "url": url, #jd详情页的地址
                    'edu': edu, # 最低学历
                    'exp': [], # 所需工作经验，比如[3, 5]表示3到5年, [3]表示3年，[]表示无经验要求
                    'name': name , # 职位名称 *
                    'date': date, # 职位发布日期，字符串形式即可，后期统一转换
                    'lang': '', # 对语言的要求
                    'place': '', # 办公具体地址
                    'major': '', # 专业要求
                    'count': count, # 招聘数量
                    'salary': [], # 薪资待遇，[5000, 8000]表示月薪5到8千，[4000]表示4千，[]表示没有写明
                    'toSchool': True, # 是否是面向校园招聘，本次官网抓取一律都是校园招聘，所以此处都是True
                    'welfare': [], # 福利待遇，比如五险一金、十三薪之类的，保存成数组
                    'funType': '', # 职能类型，比如证券经纪人是证券 / 期货 / 外汇经纪人
                    'company': self.company, # 企业名称
                    'location': location, # 所在城市
                    'industry': '快消房产行业', # 企业所在行业
                    'keywords': [], # 此岗位的搜索关键字
                    'platform': 'offical', # 针对官网抓取时此处一律保存为offical
                    'searchKeyword': '', # 搜索的关键字，由于是官网抓取所以此处一律为空字符串
                    'description': description, # 职位的详细描述，包括职责、要求之类的
                    'subIndustry': '', # 一律为空字符串
                    'stime': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 抓取时间
                }

                # if offical_posts_coll.insert(item):
                #     print('insert one job')
                pprint.pprint(item)

POST()
